#ifndef Jeu_h
#define Jeu_h

#include <vector>

#include "Scene.h"
#include "GUInterface.h"

class Monde;
class Territoire;
class PionManager;
class Joueur;
class Partie;
class LoadModelVisitor;
class LoadBordersVisitor;
class RenderVisitor;
class LoadNameVisitor;
class Playlist;

/**
 * Classe Jeu
 */
class Jeu 
{

  public:

   Jeu();
   ~Jeu();
   void init();
   static void _display();
   void display();
   static void reshape(int w, int h);
   static void keyboard(unsigned char key, int x, int y);
   static void timer(int v);
   static void mouse(int button, int state, int x, int y);
   static void mouseActiveMotion(int x, int y);
   static void mousePassiveMotion(int x, int y);
   Territoire * select(int x, int y);

   PionManager* getPionManager() { return pionManager; }
   Monde* getMonde() { return monde; }
   Partie* getPartie() { return partie; }
   Scene* getScene() { return &scene; }
   void toggleDisplayMode();
   
   
  public:
   static Jeu * jeu;
   GUInterface guinterface;
   Scene scene;
   Playlist* playlist;

  protected:
   Monde * monde;
   PionManager * pionManager;
   Partie* partie;

  private:
   LoadModelVisitor* loadModelVisitor;
   LoadBordersVisitor* loadBordersVisitor;
   RenderVisitor* renderVisitor;
   LoadNameVisitor* loadNameVisitor;

};

#endif

